/**
 * 给定一个二叉树的根root和两个整数 val 和depth，在给定的深度depth处添加一个值为 val 的节点行。
 * 注意，根节点root位于深度1。
 * 加法规则如下:
 * 给定整数depth，对于深度为depth - 1 的每个非空树节点 cur ，创建两个值为 val 的树节点作为 cur 的左子树根和右子树根。
 * cur 原来的左子树应该是新的左子树根的左子树。
 * cur 原来的右子树应该是新的右子树根的右子树。
 * 如果 depth == 1 意味着depth - 1根本没有深度，那么创建一个树节点，值 val 作为整个原始树的新根，而原始树就是新根的左子树。
 *https://leetcode.cn/problems/add-one-row-to-tree/
 *
 *
 */
class AddOneRow {
    public TreeNode addOneRow(TreeNode root, int val, int depth) {
        if(depth==1){
            TreeNode newRoot=new TreeNode(val);
            newRoot.left=root;
            return newRoot;
        }
        addChild(root,val,depth);
        return root;
    }
    public void addChild(TreeNode root,int val,int depth){
        if(root==null){
            return;
        }
        if(depth-1==1){
            TreeNode cur1=new TreeNode(val);
            TreeNode cur2=new TreeNode(val);
            cur1.left=root.left;
            cur2.right=root.right;
            root.left=cur1;
            root.right=cur2;
            return;
        }
        addChild(root.left,val,depth-1);
        addChild(root.right,val,depth-1);
    }
}